package ysview

import (
	"github.com/Masterminds/sprig/v3"
	"github.com/gogf/gf/v2/frame/g"
	"github.com/gogf/gf/v2/os/gview"
	"github.com/gogf/gf/v2/text/gstr"
)

// 增加 sprig 操作函数
func addSprig(view *gview.View) {
	raw := sprig.FuncMap()
	m := make(g.MapStrAny, 0)
	for k, v := range raw {
		m["sp_"+k] = v
	}
	view.BindFuncMap(m)
}

// 增加 sprig 操作函数
func addCommon(view *gview.View) {
	view.BindFuncMap(g.MapStrAny{
		"caseCamelLower": gstr.CaseCamelLower,
	})
}

// GView 获取一个 gview 对象，可以自动读取配置文件的配置
// 默认绑定 sprig 模板函数, sp_ 开头
func GView(name ...string) *gview.View {
	view := g.View(name...)
	addSprig(view)
	addCommon(view)
	return view
}

// GViewNull 获取一个空白的 View 对象
// 默认绑定 sprig 模板函数, sp_ 开头
func GViewNull() *gview.View {
	view := gview.Instance("gf-ex-null")
	addSprig(view)
	addCommon(view)
	return view
}
